home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d12
/
asmbler.arc
/
DDIIL2.ASM
< prev
next >
Wrap
Assembly Source File
|
1988-11-19
|
2KB
|
60 lines
PUBLIC DDIIL
ASSUME CS:$DDIIL
INCLUDE DOS.INC
$DDIIL SEGMENT PARA PUBLIC 'CODE'
COMMENT \
PROCEDURE DDIIL (IX0,IY0,IX1,IY1 : integer; VISBLE : boolean);
{
(Incremental Line)
Fill in the steps on the plot frame between the point (IX0,IY0) and
(IX1,IY1), where IX0, IY0, IX1, and IY1 are in actual raster units for
the device being used. If a vector plot device is to be used, this
routine might instead simply transmit a single vector to a buffer.
This version uses a symmetric DDA algorithm due to Van Throng (?).
(25-JAN-84)
}
VAR
AXIS, AXISX, AXISY, BIAS, DELX, DELY, DIAG, DIAGX, DIAGY, I, IX,
IY, NDIST, NUMPNT, SX, SY : INTEGER;
\
ARGCNT EQU 5 ; Number of arguments
IX0 EQU [BP] ; Define symbolic argument frame offsets
IY0 EQU [BP-2]
IX1 EQU [BP-4]
IY1 EQU [BP-6]
VISBLE EQU [BP-8]
; return address as CS:offset at [BP-10..13]
; old BP at [BP-14..15]
DDIIL PROC FAR
PUSH BP ; Save caller's frame pointer
MOV BP,SP ; and set up our own.
ADD BP,4+2*ARGCNT ; Point to top of arg list on stack
MOV DX,VISBLE
TEST DL,DL ; VISBLE = false?
JZ DONE ; yes, nothing to draw
MOV CX,IX0
MOV DX,IY0
MOV AH,$QS_VECTORMOVE
INT $VIDEO
MOV CX,IX1
MOV DX,IY1
MOV AH,81H ; Default color
MOV AH,$QS_VECTORDRAW
INT $VIDEO
DONE: ; here when done
POP BP ; restore caller's frame pointer
RET 2*ARGCNT ; and return discarding stack arguments
DDIIL ENDP
$DDIIL ENDS
END